<?php

class Hospitalizacion_model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    /*     * *****************************ASIGNACION***************************************************** */

    function combo_ambiente() {
        $cad = 'SELECT Ambiente, Descripcion FROM ambiente where Ambiente=PadreAmbiente and TipoAmbiente=1';

        $resultado = $this->db->query($cad)->result_array();

        $combo = array();
        $combo[0] = 'Seleccione un ambiente';
        foreach ($resultado as $r) {
            $combo[$r['Ambiente']] = $r['Descripcion'];
        }
        return $combo;
    }

    function comboAnidado1($idAmbiente) {

        $cad = 'SELECT Ambiente, Descripcion FROM ambiente where PadreAmbiente=' . $idAmbiente . ' and Ambiente<>' . $idAmbiente . '  and TipoAmbiente=1 and Estado=0';
        $resultado = $this->db->query($cad)->result_array();

        return $resultado;
    }

    function comboAnidado2($idSitio) {

        $cad = 'SELECT Ambiente, Descripcion FROM ambiente where PadreAmbiente=' . $idSitio . ' and Ambiente<>' . $idSitio . ' and TipoAmbiente=1 and Estado=0';
        $resultado = $this->db->query($cad)->result_array();

        return $resultado;
    }

    function buscarDatosCita($codigo) {
        $cad = "SELECT DISTINCT o.Orden, CONCAT(p.Nombres,'  ',p.Apellido_Paterno,'  ',p.Apellido_Materno) Nombres,
            o.FechaOrden, ci.Especialidad, c.PersonaD codDoctor, proc.Persona codPaciente, proc.HistoriaClinica,
            ci.Cita codCita 
            from cita ci, orden o, persona p, procedimiento proc, consulta c 
            where ci.Cita=".$codigo." AND o.EstadoOrden='2' AND proc.Procedimiento=o.Procedimiento AND proc.Procedimiento=c.Procedimiento AND 
            proc.Persona=p.Persona AND ci.Orden=o.Orden AND ci.Estado='0' AND EspecialidadPadre(ci.Especialidad)=" . ID_ESP_HOSPITALIZACION;
        
        
        $query = $this->db->query($cad)->result_array();
        return $query;
        
    }

    function buscarOrden($codigo, $paciente, $fecI, $fecF) {
        //AGREGAR POR TABLA CITA
        //ACTUALIZAR EN CITA EL CAMPO "ESTADO" A "2" EN PROCESO
        //ESTADO 0, 1, 2,  0=REGISTRADO 1=ATENDIDO 2=CANCELADO
        //ESTADO PROCEDIMIENTO 0=ATENDIDO 1=

        $cad = "SELECT DISTINCT o.Orden, CONCAT(p.Nombres,'  ',p.Apellido_Paterno,'  ',p.Apellido_Materno) Nombres,
            o.FechaOrden, ci.Fecha fechaCita, ci.Especialidad, c.PersonaD codDoctor, proc.Persona codPaciente, proc.HistoriaClinica,
            ci.Cita codCita 
            from cita ci, orden o, persona p, procedimiento proc, consulta c 
            where o.EstadoOrden='2' AND proc.Procedimiento=o.Procedimiento AND proc.Procedimiento=c.Procedimiento AND 
            proc.Persona=p.Persona AND ci.Orden=o.Orden AND ci.Estado='0' AND EspecialidadPadre(ci.Especialidad)=" . ID_ESP_HOSPITALIZACION . " AND STR_TO_DATE('" . $fecI . "','%d-%m-%Y')<=ci.Fecha and
            STR_TO_DATE('" . $fecF . "','%d-%m-%Y')>=ci.Fecha";

        if ($codigo != "") {
            $cad = $cad . " AND ci.Cita = '$codigo'";
        }

        if ($paciente != "") {
            $cad = $cad . " AND ci.PersonaP=p.Persona AND (Nombres LIKE '%$paciente%' OR Apellido_Paterno LIKE '%$paciente%' OR Apellido_Materno LIKE '%$paciente%') ";
        }

        $query = $this->db->query($cad)->result_array();
        return $query;
    }

    function buscarOrden2($codigo, $paciente, $fecI, $fecF) {
        //AGREGAR POR TABLA CITA
        //ACTUALIZAR EN CITA EL CAMPO "ESTADO" A "1" ATENDIDO
        //ESTADO 0, 1, 2,  0=REGISTRADO 1=ATENDIDO 2=CANCELADO
        //ESTADO PROCEDIMIENTO 0=ATENDIDO 1=

        $cad = "SELECT DISTINCT o.Procedimiento, o.Orden, CONCAT(p.Nombres,'  ',p.Apellido_Paterno,'  ',p.Apellido_Materno) Nombres,
            o.FechaOrden 
            from orden o, persona p, procedimiento proc
            where proc.Procedimiento=o.Procedimiento AND o.EstadoOrden='1' AND
            proc.Persona=p.Persona AND EspecialidadPadre(o.Especialidad)=" . ID_ESP_ALTA . " AND STR_TO_DATE('" . $fecI . "','%d-%m-%Y')<=o.FechaOrden and
            STR_TO_DATE('" . $fecF . "','%d-%m-%Y')>=o.FechaOrden";
         if ($codigo != "") {
            $cad = $cad . " AND o.Orden = '$codigo'";
        }

        if ($paciente != "") {
            $cad = $cad . " AND proc.PersonaP=p.Persona AND (Nombres LIKE '%$paciente%' OR Apellido_Paterno LIKE '%$paciente%' OR Apellido_Materno LIKE '%$paciente%') ";
        }

        $query = $this->db->query($cad)->result_array();
        return $query;
    }

    function buscarProc($codigo, $paciente, $fecI, $fecF) {
        //AGREGAR POR TABLA CITA
        //ACTUALIZAR EN CITA EL CAMPO "ESTADO" A "1" ATENDIDO
        //ESTADO 0, 1, 2,  0=REGISTRADO 1=ATENDIDO 2=CANCELADO
        //ESTADO PROCEDIMIENTO 0=ATENDIDO 1=

        $cad = "SELECT DISTINCT ci.Procedimiento,CONCAT(p.Nombres,'  ',p.Apellido_Paterno,'  ',p.Apellido_Materno) Nombres,
               ci.Fecha,p.Persona,ci.Cita FROM cita ci,persona p WHERE ci.Estado = 1 AND p.Persona=ci.PersonaP AND EspecialidadPadre(ci.Especialidad)=" . ID_ESP_HOSPITALIZACION . " AND STR_TO_DATE('" . $fecI . "','%d-%m-%Y')<=ci.Fecha and
            STR_TO_DATE('" . $fecF . "','%d-%m-%Y')>=ci.Fecha";

        /* $cad = "SELECT DISTINCT o.Orden,CONCAT(p.Nombres,'  ',p.Apellido_Paterno,'  ',p.Apellido_Materno) Nombres,
          o.FechaOrden,o.Especialidad,c.PersonaD codDoctor,proc.Persona codPaciente,proc.HistoriaClinica from orden o, persona p, personal per, procedimiento proc,
          paciente pac, consulta c, especialidad esp where o.EstadoOrden='1' AND proc.Procedimiento=o.Procedimiento AND proc.Procedimiento=c.Procedimiento AND proc.Persona=p.Persona";
         */

        if ($codigo != "") {
            $cad = $cad . " AND ci.Procedimiento = '$codigo'";
        }

        if ($paciente != "") {
            $cad = $cad . " AND ci.PersonaP=p.Persona AND (Nombres LIKE '%$paciente%' OR Apellido_Paterno LIKE '%$paciente%' OR Apellido_Materno LIKE '%$paciente%') ";
        }
        $query = $this->db->query($cad)->result_array();
        return $query;
    }

    function insertarProc($persona, $historia, $especialidad, $doctor, $cita, $cama, $codPaciente) {
        $this->db->trans_start();
        
            $data = array(
                'Persona' => $persona,
                'Fecha' => date('Y-m-d'),
                'HistoriaClinica' => $historia,
                'EstadoProcedimiento' => '1'
            );
            $this->db->insert('procedimiento', $data);
            $proc = $this->db->insert_id();
            
            //actualizar en la tabla cita el procedimiento de la hospitalización
            $data1 = array(
                'Procedimiento' => $proc
            );
            $this->db->where('Cita', $cita);
            $this->db->update('cita', $data1);

            $data2 = array(
                'Procedimiento' => $proc,
                'Especialidad' => $especialidad,
                'FechaInicio' => date('Y-m-d'),
                'PersonaD' => $doctor,
                'Cita' => $cita
            );
            $this->db->insert('consulta', $data2);
            
            //
            
            $data3 = array(
                'Estado' => 1
            );
            $this->db->where('Ambiente', $cama);
            $this->db->update('ambiente', $data3);

            $data4 = array(
                'Procedimiento' => $proc,
                'Ambiente' => $cama,
                'Estado' => 1
            );
            if ($this->db->insert('asigpacientesitio', $data4)) {
                //actualizar Estado en tabla CITA a atendido => Estado=1
                $data5 = array(
                    'Estado' => '1'
                );
                $this->db->where('Cita', $cita);
                $this->db->update('cita', $data5);   
            }
            
            $datos6 = array(
                'EstadoPaciente' => 20
            );
            $this->load->model('Paciente_model');
            $this->Paciente_model->actualizarEstado($datos6, $codPaciente);
            
        $this->db->trans_complete();
        
        if ($this->db->trans_status() === FALSE)
            return "error";
        else
            return "ok";
 
    }

//    function insertarConsulta($proc, $especialidad, $doctor, $cita) {
//        //actualizar en la tabla cita el procedimiento de la hospitalización
//        $data1 = array(
//            'Procedimiento' => $proc
//        );
//        $this->db->where('Cita', $cita);
//        $this->db->update('cita', $data1);
//        
//        $data2 = array(
//            'Procedimiento' => $proc,
//            'Especialidad' => $especialidad,
//            'FechaInicio' => date('Y-m-d'),
//            'PersonaD' => $doctor,
//            'Cita' => $cita
//        );
//        $this->db->insert('consulta', $data2);
//    }

//    function insertarCama($cita, $proc, $cama) {
//        $data1 = array(
//            'Estado' => 1
//        );
//        $this->db->where('Ambiente', $cama);
//        $this->db->update('ambiente', $data1);
//
//        $data = array(
//            'Procedimiento' => $proc,
//            'Ambiente' => $cama,
//            'Estado' => 1
//        );
//        if ($this->db->insert('asigpacientesitio', $data)) {
//            //actualizar Estado en tabla CITA a atendido => Estado=1
//            $data = array(
//                'Estado' => '1'
//            );
//            $this->db->where('Cita', $cita);
//            $this->db->update('cita', $data);
//            return "ok";
//        } else {
//            return "error";
//        }
//    }

    /*     * ***********************************SEGUIMIENTO********************************************************************* */

    function insertarDetalleSeguimientoEstandar($idProc, $idDoctor, $presionArterial, $pulso, $frecuenciaRespiratoria, $temperatura, $peso, $observacion) {
        $tabla1 = array(
            'Procedimiento' => $idProc,
            'PersonaD' => $idDoctor
        );
        $this->db->insert('seguimiento', $tabla1);
        $lastId = $this->db->insert_id();

        $tabla21 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '1',
            'Valor' => $presionArterial
        );
        $this->db->insert('detalleseguimiento', $tabla21);

        $tabla22 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '2',
            'Valor' => $pulso
        );
        $this->db->insert('detalleseguimiento', $tabla22);

        $tabla23 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '3',
            'Valor' => $frecuenciaRespiratoria
        );
        $this->db->insert('detalleseguimiento', $tabla23);

        $tabla24 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '4',
            'Valor' => $temperatura
        );
        $this->db->insert('detalleseguimiento', $tabla24);

        $tabla25 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '5',
            'Valor' => $peso
        );
        $this->db->insert('detalleseguimiento', $tabla25);

        $tabla26 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '6',
            'Valor' => $observacion
        );
        $this->db->insert('detalleseguimiento', $tabla26);

        return "ok";
    }

    function insertarDetalleSeguimientoNeonato($idProc, $idDoctor, $presionArterial, $pulso, $frecuenciaRespiratoria, $temperatura, $peso, $talla, $perimetroCefalico, $observacion) {
        $tabla1 = array(
            'Procedimiento' => $idProc,
            'PersonaD' => $idDoctor
        );
        $this->db->insert('seguimiento', $tabla1);
        $lastId = $this->db->insert_id();

        $tabla21 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '1',
            'Valor' => $presionArterial
        );
        $this->db->insert('detalleseguimiento', $tabla21);

        $tabla22 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '2',
            'Valor' => $pulso
        );
        $this->db->insert('detalleseguimiento', $tabla22);

        $tabla23 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '3',
            'Valor' => $frecuenciaRespiratoria
        );
        $this->db->insert('detalleseguimiento', $tabla23);

        $tabla24 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '4',
            'Valor' => $temperatura
        );
        $this->db->insert('detalleseguimiento', $tabla24);

        $tabla25 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '5',
            'Valor' => $peso
        );
        $this->db->insert('detalleseguimiento', $tabla25);

        $tabla26 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '6',
            'Valor' => $talla
        );
        $this->db->insert('detalleseguimiento', $tabla26);

        $tabla27 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '7',
            'Valor' => $perimetroCefalico
        );
        $this->db->insert('detalleseguimiento', $tabla27);

        $tabla28 = array(
            'Seguimiento' => $lastId,
            'Procedimiento' => $idProc,
            'Campo' => '8',
            'Valor' => $observacion
        );
        $this->db->insert('detalleseguimiento', $tabla28);

        return "ok";
    }

    function buscarSeguimientos($idProc) {
        $cad = "SELECT seg.Seguimiento idSeguimiento, concat(p2.Nombres,' ', p2.Apellido_Paterno) doctor, tp.Descripcion tipoPersonal, seg.Fecha fecha 
                from seguimiento seg, personal per, persona p2, tipopersonal tp 
                where per.Persona=p2.Persona and per.Persona=seg.PersonaD and tp.TipoPersonal =per.TipoPersonal and seg.Procedimiento='$idProc'";
        $sql = $this->db->query($cad);
        return $sql->result_array();
    }

    function buscarDetalleSeguimiento($idSeg, $idProc) {
        $cad = "SELECT det.Valor valor from detalleseguimiento det where det.Seguimiento='$idSeg' and det.Procedimiento='$idProc'";
        $sql = $this->db->query($cad);
        return $sql->result_array();
    }

    function buscarPacientesHospitalizados() {
        $cad = "  select  concat(p.Nombres,' ', p.Apellido_Paterno) paciente, e.Descripcion tipo_hospitalizacion, 
                  concat(p2.Nombres,' ', p2.Apellido_Paterno) doctor, s.Procedimiento idProcedimiento, 
                  c.Especialidad idEspecialidad, e.Descripcion nombreEspecialidad from persona p, asigpacientesitio s,  consulta c, procedimiento proc, especialidad e, 
                  personal per, persona p2 where s.Procedimiento=c.Procedimiento and  proc.Procedimiento=c.Procedimiento and 
                  proc.Persona=p.Persona and e.Especialidad=c.Especialidad and per.Persona=c.PersonaD and per.Persona=p2.Persona and 
                  s.Estado='1'";
        $sql = $this->db->query($cad);
        return $sql->result_array();
    }

    function darAltaFila($procedimiento, $paciente, $cita) {
        //insertar OrdenAlta ()
        $data = array(
            'FechaOrden' => date('Y-m-d'),
            'Procedimiento' => $procedimiento,
            'EstadoOrden' => '1',
            'Especialidad' => ID_ESP_ALTA,
            'Persona' => $paciente
        );
        $this->db->insert('orden', $data);

        //Actualizar estado cita (estado = 2)
        $data1 = array(
            'Estado' => 2 //terminó la cita
        );
        $this->db->where('Cita', $cita);
        $this->db->update('cita', $data1);
    }

    function desasignarCama($procedimiento) {
        $cad = 'SELECT AsigPacienteSitio, Ambiente FROM asigpacientesitio where Procedimiento=' . $procedimiento;
        $resultado = $this->db->query($cad)->result_array();

        //actualizar OrdenAlta ()
        $data = array(
            'EstadoOrden' => '3',
        );
        $this->db->where('Procedimiento', $procedimiento);
        $this->db->update('orden', $data);

        //Actualizar tabla asigPaciente (estado = 0)

        $cama = $resultado[0]['Ambiente'];
        $Asigsitio = $resultado[0]['AsigPacienteSitio'];

        $data2 = array(
            'Estado' => '0'
        );
        $this->db->where('AsigPacienteSitio', $Asigsitio);
        $this->db->update('asigpacientesitio', $data2);

        //actualizar tabla Ambiente (estado = 0)

        $data3 = array(
            'Estado' => '0'
        );
        $this->db->where('Ambiente', $cama);
        $this->db->update('ambiente', $data3);
    }

    function buscarPaciente($codigo, $paciente, $fecI, $fecF) {
        $cad = "  select  p.Persona,concat(p.Nombres,' ', p.Apellido_Paterno) Nombres,concat(p2.Nombres,' ', p2.Apellido_Paterno) Doctor,
                  proc.Fecha, s.Ambiente, a.PadreAmbiente, c.Procedimiento 
                  
                  from persona p, asigpacientesitio s,  consulta c, procedimiento proc, especialidad e,
                  personal per, persona p2, ambiente a 
                  
                  where s.Procedimiento=c.Procedimiento and  proc.Procedimiento=c.Procedimiento and
                  proc.Persona=p.Persona and e.Especialidad=c.Especialidad and per.Persona=c.PersonaD and per.Persona=p2.Persona and
                  s.Estado='1' AND STR_TO_DATE('" . $fecI . "','%d-%m-%Y')<=proc.Fecha and
                  STR_TO_DATE('" . $fecF . "','%d-%m-%Y')>=proc.Fecha and s.Ambiente=a.Ambiente";

        if ($codigo != "") {
            $cad = $cad . " AND p.Persona = '$codigo'";
        }

        if ($paciente != "") {
            $cad = $cad . " AND (p.Nombres LIKE '%$paciente%' OR p.Apellido_Paterno LIKE '%$paciente%' OR p.Apellido_Materno LIKE '%$paciente%') ";
        }
        $sql = $this->db->query($cad);
        return $sql->result_array();
    }

    function obtenerAmbientes($cuarto){
        $cad = "select a.PadreAmbiente from ambiente a where a.Ambiente=". $cuarto."";
       return $this->db->query($cad)->result_array();
    }
    
    function acualizarCama($procedimiento, $camaAnterior, $cama){
        $cad = 'SELECT AsigPacienteSitio, Ambiente FROM asigpacientesitio where Procedimiento=' . $procedimiento;
        $resultado = $this->db->query($cad)->result_array();
        
        $Asigsitio = $resultado[0]['AsigPacienteSitio'];

        $data2 = array(
            'Ambiente' => $cama
        );
        $this->db->where('AsigPacienteSitio', $Asigsitio);
        $this->db->update('asigpacientesitio', $data2);
        
        //actualizar tabla Ambiente

        $data3 = array(
            'Estado' => '0'
        );
        $this->db->where('Ambiente', $camaAnterior);
        $this->db->update('ambiente', $data3);
        
        $data4 = array(
            'Estado' => '1'
        );
        $this->db->where('Ambiente', $cama);
        $this->db->update('ambiente', $data4);
        
        return "ok";
    }
    
    

}


?>
